#ifndef __OPERATIONMODE_CBC_HPP__
#define __OPERATIONMODE_CBC_HPP__

#include "OperationMode.hpp"
#include "Block.hpp"

class OperationMode_CBC : public OperationMode {

	private:
		Block R;

	public:
		/**
		 * @param system encryption system
		 */
		OperationMode_CBC(Algorithm &system);

		/**
		 * @param system encryption system
		 * @param iv initialization vector
		 */
		OperationMode_CBC(Algorithm &system, const Block &iv);

		Block encrypt(const Block &plaintext);

		Block decrypt(const Block &ciphertext);

};
#endif

